import java.util.Arrays;

public class text {
    public static void main(String[] args) {
        int[] arr={1,2,3,4,5,6};
        int ret=fun6(arr,5);
        System.out.println(ret);

    }
    public static int fun6(int[] arr,int key){
        int left=0;
        int right= arr.length-1;
        while(left<=right) {
            int mid = (left + right) / 2;
            if (arr[mid] > key) {
                right = mid - 1;
            } else if (arr[mid] < key) {
                left = mid + 1;
            } else {
                return mid;
            }
        }
        return -1;
    }
    public static void main6(String[] args) {
        /*调整数组顺序使得奇数位于偶数之前。调整之后，不关心大小顺序。
        如数组：[1,2,3,4,5,6]
        调整后可能是：[1, 5, 3, 4, 2, 6]*/
        int[] arr={1,2,3,4,5,6};
        fun5(arr);
        System.out.println(Arrays.toString(arr));
    }
    public static void fun5(int[] arr){
        int left=0;
        int right= arr.length-1;
        while(left<right){
            while((left<right)&&arr[left]%2!=0){
                left++;          //向左查找直到找到一个偶数
            }
            while((left<right)&&arr[right]%2==0){
                right--;        //向右查找直到找到一个奇数
            }
            if(left<right){
                int temp=arr[left];
                arr[left]=arr[right];     //交换
                arr[right]=temp;
            }
        }
    }
    public static void main5(String[] args) {
        //实现一个方法 avg, 以数组为参数, 求数组中所有元素的平均值(注意方法的返回值类型).
        int[] arr={1,2,3,4,5,6,7,8,9,10};
        double ret=fun4(arr);
        System.out.println(ret);
    }
    public static double fun4(int[] arr){
        double avg=0.0,sum=0.0;
        for (int i = 0; i < arr.length; i++) {
            sum+= arr.length;
        }
        avg=sum/ arr.length;
        return avg;
    }
    public static void main4(String[] args) {
        //实现一个方法 sum, 以数组为参数, 求数组所有元素之和.
        int[] arr={1,2,3,4,5,6};
        int ret=fun3(arr);
        System.out.println(ret);
    }
    public static int fun3(int[] arr){
        int sum=0;
        for (int i = 0; i < arr.length; i++) {
            sum+=arr[i];
        }
        return sum;
    }
    public static void main3(String[] args) {
        //实现一个方法 printArray, 以数组为参数, 循环访问数组中的每个元素, 打印每个元素的值.
        int[] arr=new int[]{1,2,3,4,5,6};
        fun2(arr);
    }
    public static void fun2(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
        System.out.println();
    }
    public static void main2(String[] args) {
      /*实现一个方法 transform, 以数组为参数, 循环将数组中的每个元素 乘以 2 ,
      并设置到对应的数组元素上. 例如 原数组为 {1, 2, 3}, 修改之后为 {2, 4, 6}*/
        int[] arr = new int[]{1,2,3};
        fun1(arr);
        System.out.println(Arrays.toString(arr));
    }
    public static void fun1(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            arr[i]=arr[i]*2;
        }
    }
    public static void main1(String[] args) {
        //(改进)创建一个 int 类型的数组, 元素个数为 100, 并把每个元素依次设置为 1 - 100
        int[] arr =new int[100];
        for (int i = 0; i < arr.length; i++) {
            arr[i]=i+1;
        }
        System.out.println(Arrays.toString(arr));
    }
}
